package reflect;

import java.lang.reflect.Field;

/*反射机制访问类的属性
 这样的操作使用较少，以为常常使用set 和get 方法来操作
 */
public class ReflectDemo08 {
    public static void main(String[] args) throws Exception{
        Teacher teacher = new Teacher();
        teacher.name = "zhangsan";
        System.out.println(teacher);

        //用反射机制来设置参数
        Class cla = Class.forName("reflect.Teacher");
        Object object = cla.newInstance();
        /*反射机制提供的方法：
        field getField （String fieldName）
         根据属性的名字获取该属性，返回值为一个field类型的对象
         field是属性对象，他是每一个实例用于表示一个类中的一个属性，反射对象之一
         */
        Field name = cla.getField("name");
        //为属性值赋值
        name.set(object,"haha");
        System.out.println(object);
        //获取属性值
        System.out.println(name.get(object));//类似于System.out.println(object.name);
    }
}
